const { getApiUrl } = require('../../config/config.js')

Page({
  data: {
    noticeList: [],  // 公告列表
    loading: false,  // 加载状态
    refreshing: false, // 下拉刷新状态
    hasMore: true,   // 是否还有更多数据
    page: 1,         // 当前页码
    pageSize: 10,    // 每页数量
    categories: [    // 公告分类
      { id: 0, name: '全部' },
      { id: 1, name: '校园公告' },
      { id: 2, name: '学院通知' },
      { id: 3, name: '活动预告' },
      { id: 4, name: '重要通知' }
    ],
    currentCategory: 0 // 当前选中的分类
  },

  onLoad: function() {
    this.loadNoticeList(true);
  },

  // 下拉刷新
  onPullDownRefresh: function() {
    this.setData({
      page: 1,
      hasMore: true
    }, () => {
      this.loadNoticeList(true).then(() => {
        wx.stopPullDownRefresh();
      });
    });
  },

  // 上拉加载更多
  onReachBottom: function() {
    if (this.data.hasMore && !this.data.loading) {
      this.loadNoticeList();
    }
  },

  // 切换分类
  onCategoryChange: function(e) {
    const id = e.currentTarget.dataset.id;
    if (id === this.data.currentCategory) return;
    
    this.setData({
      currentCategory: id,
      page: 1,
      noticeList: [],
      hasMore: true
    }, () => {
      this.loadNoticeList(true);
    });
  },

  // 加载公告列表
  async loadNoticeList(isRefresh = false) {
    try {
      if (isRefresh) {
        this.setData({
          page: 1,
          hasMore: true,
          refreshing: true
        });
      }
      
      this.setData({ loading: true });
      
      // 模拟接口请求，实际开发中替换为真实接口
      const { page, pageSize, currentCategory } = this.data;
      const url = getApiUrl(`/notice/list?page=${page}&pageSize=${pageSize}${currentCategory ? `&category=${currentCategory}` : ''}`);
      
      // 这里使用模拟数据，实际开发中使用真实接口
      // 模拟网络请求延迟
      await new Promise(resolve => setTimeout(resolve, 500));
      
      // 模拟公告数据
      const mockData = this.getMockNoticeData(page, currentCategory);
      
      // 处理数据并更新
      const newNoticeList = mockData.map(notice => ({
        ...notice,
        createTime: this.formatTime(notice.createTime)
      }));
      
      this.setData({
        noticeList: isRefresh ? newNoticeList : [...this.data.noticeList, ...newNoticeList],
        hasMore: newNoticeList.length === pageSize,
        page: isRefresh ? 2 : page + 1,
        loading: false,
        refreshing: false
      });
      
    } catch (error) {
      console.error('加载公告列表失败:', error);
      wx.showToast({
        title: '加载失败，请重试',
        icon: 'none'
      });
      
      this.setData({
        loading: false,
        refreshing: false
      });
    }
  },
  
  // 格式化时间
  formatTime(timestamp) {
    const date = new Date(timestamp);
    return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;
  },
  
  // 查看公告详情
  viewNoticeDetail(e) {
    const id = e.currentTarget.dataset.id;
    const notice = this.data.noticeList.find(item => item.id === id);
    
    if (notice) {
      const noticeStr = encodeURIComponent(JSON.stringify(notice));
      wx.navigateTo({
        url: `/pages/details/details?id=${id}&post=${noticeStr}&type=notice`
      });
    }
  },
  
  // 模拟获取公告数据
  getMockNoticeData(page, category) {
    const baseData = [];
    const startIndex = (page - 1) * this.data.pageSize;
    
    // 根据分类筛选不同的数据
    const categoryPrefix = category === 0 ? '' : `分类${category}：`;
    
    for (let i = 0; i < this.data.pageSize; i++) {
      const id = startIndex + i + 1;
      
      // 当模拟数据超过30条时，返回空数组表示没有更多数据
      if (id > 30) break;
      
      baseData.push({
        id,
        title: `${categoryPrefix}西科校园公告${id}`,
        content: `这是一条重要的校园公告内容，请同学们及时查看。这是一条重要的校园公告内容，请同学们及时查看。这是第${id}条公告。`,
        createTime: new Date(2023, 0, id).getTime(),
        authorName: '学校办公室',
        authorAvatar: '/images/avatar/school.png',
        isImportant: id % 3 === 0,
        category: category || (id % 4 + 1),
        viewsCount: 100 + id * 10,
        attachments: id % 2 === 0 ? [{
          name: '附件1.pdf',
          url: 'https://example.com/file.pdf',
          size: '1.2MB'
        }] : []
      });
    }
    
    return baseData;
  },

  // 返回上一页
  goBack: function() {
    wx.navigateBack({
      delta: 1
    });
  }
})
